package Concurrency.AsynTaskExecute;

/**
 * 定时器  固定频率（Fixed Rate)
 * 运行该程序发现：第二个任务FixedRateTask同样只在第一个任务运行结束后才会执行
 * 但是第二个任务刚一执行，会把之前没有运行的次数补过来，一下次运行5次
 */

import java.util.Timer;
import java.util.TimerTask;

public class TimerFixedRate {
    static class LongRunningTask extends TimerTask {

        @Override
        public void run() {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("经过5秒的运行，LongRunningTask执行结束");
        }
    }

    static class FixedRateTask extends TimerTask {
        static int count = 0;
        @Override
        public void run() {
            System.out.println(count++);
        }
    }

    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new LongRunningTask(), 10);
        timer.scheduleAtFixedRate(new FixedRateTask(), 100, 1000);
    }
}
